package com.tuanzi.loan.business.service.settlement;

import com.tuanzi.loan.business.entity.settlement.CompanyInfo;
import com.tuanzi.loan.business.entity.settlement.FirstpartyDataChangeRecord;
import com.tuanzi.loan.business.entity.settlement.JfSltBackData;
import com.tuanzi.loan.core.service.CommonService;

import java.util.Date;
import java.util.List;

public interface JfBackDataService extends CommonService<JfSltBackData,Long> {
    /**
     * 获取当前时间周一到周日所属公司的所有回数信息
     * @return
     */
    List<JfSltBackData> getCurWeekJfBackByCompanyId(Long companyId);

    /**
     *
     * @param type 模式类型 0 1
     * @param companyId 公司id
     * @param copMode 合作模式 0 1 2 3
     * @return
     */
    JfSltBackData createJfSltBackData(Integer type,Long companyId,Integer copMode);

    /**
     * 根据当前时间获取该类型周一到周日的数据
     * @param type 模式类型
     * @return
     */
    List<JfSltBackData> getJfBackListInCurrWeekByType(Integer type,Long companyId);

    /**
     * 从本周数据中获取凭证url
     * @param jfSltBackDataList
     * @return url地址
     */
    String getCurWeekPingZhengUrlByList(List<JfSltBackData> jfSltBackDataList);

    /**
     * 更新List中创建时间相同的对象
     * @param jfSltBackDataList
     * @param jfSltBackData
     * @return 更新后的List
     */
    List<JfSltBackData> updateJSBDListNotInDataBase(List<JfSltBackData> jfSltBackDataList,JfSltBackData jfSltBackData, CompanyInfo companyInfo);

    List<FirstpartyDataChangeRecord> findBySettlementTimeAndCompanyId(Date settlementStartTime, Date settlementEndTime, Long companyId);


    List<JfSltBackData> findJfSltBackDataListByProcInstId(String procInstId);

    /**
     * 按照流程实例id和结算类型查找
     * @param procInstId
     * @param type
     * @return
     */
    List<JfSltBackData> findJfSltBackDataListByProcInstIdAndType(String procInstId,Integer type);
    Integer countProductClickUv(Date beginDate,Date endDate,Integer settlementType, Long productId) ;


    /*通过id删除*/
    void  deletebyid(Long id);

    void saveUvRecord(List<JfSltBackData> jfSltBackDataList);

}
